#!/usr/bin/env bash

CURR_DIR=$(pwd)
echo $CURR_DIR
export AC_CURR_DIR=$CURR_DIR
EXTRACT_DIR=$CURR_DIR/.red
MAIN_EXE=./run.sh
export LC_COLLATE='C'
export LC_CTYPE='C'

function main(){
    # 计算当前文件的总行数，以便可以把当前脚本的内容能和升级包的内容区别
#    local total_lines=$(cat $0 | wc -l)
    # 因为wc -l 命令只能统计文件中的换行符的数目，　由于当前脚本要和压缩包拼接到一起，　因此最后一样末尾是不能有换行符的，　所以总行数需要+1
#    ((total_lines++))
    # 利用__END__来表示脚本结束，　也可以使用其他的标记，　这里要计算出当前脚本的行数，用于计算拼接后的升级包内容的起始位置
#    local code_lines=$(sed '/^__END__$/q' $0 | wc -l)
#    local pkg_lines=$((total_lines - code_lines))
#    local pkg_lines=`awk '/^# __END__/ {print NR + 1; exit 0; }' $0`
    ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0`
    # 用于存放解压缩后的升级包
    rm -rf $EXTRACT_DIR && mkdir $EXTRACT_DIR
    echo  $ARCHIVE
    # 把升级包的内容取出用tar命令解压，这里视压缩包的类型而定
#    rm x.tar.gz
#    tail -n+$ARCHIVE $0 > x.tar.gz
    rm -rf $EXTRACT_DIR && mkdir $EXTRACT_DIR
#    tar -zxvf x.tar.gz -C adminconsole-ui
    tail -n+$ARCHIVE $0 | tar -xz -C $EXTRACT_DIR
    # 执行升级命令，　视具体的代码结构而定，　这里升级包已经解压成功了　
    # 剩余的脚本就是去执行
    #
    # 升级命令，　或者做其他的事情，　就是普通的shell脚本内容了

    cd $EXTRACT_DIR
    echo $EXTRACT_DIR
    chmod +x $MAIN_EXE
    $MAIN_EXE $*

    return 0
 }

main $@
# 一定要退出脚本，　因为后面的内容就是升级包的内容了
exit $?
#注意最后一行，必须是有且只有一个换行，且没有任何字符
__ARCHIVE_BELOW__
